import java.util.*;

public class Main2 {

    // 存储已生成的算式，以检查是否重复
    private static final Set<String> generatedProblems = new HashSet<>();

    public static void main(String[] args) {
        Random random = new Random();
        int totalProblems = 50; // 总题数

        // 生成并打印习题
        for (int i = 0; i < totalProblems; i++) {
            String problem = generateUniqueMathProblemWithAnswer(random);
            if (problem != null) { // 如果成功生成了不重复的算式
                System.out.println((i+1)+":  "+problem); // 一行打印一个算式
            }
        }
    }

    // 生成一道唯一的带答案的加减法算式
    public static String generateUniqueMathProblemWithAnswer(Random random) {
        String problem = null;
        boolean isUnique;

        do {
            isUnique = true;
            int num1 = random.nextInt(101); // 0到100（包括0和100）
            int num2 = random.nextInt(101);
            String operator = random.nextBoolean() ? "+" : "-";

            // 处理减法以确保差非负
            if (operator.equals("-") && num1 < num2) {
                int temp = num1;
                num1 = num2;
                num2 = temp;
            }

            // 生成加法时，确保和不超过100（这里实际已经放宽到可以等于100）
            if (operator.equals("+") && num1 + num2 > 100) {
                continue; // 重新生成，但在此简化示例中不直接执行，因为随机数范围已限制
            }

            // 拼接算式和答案
            problem = String.format("%d %s %d = %d", num1, operator, num2, evaluate(num1, operator, num2));

            // 检查是否已生成过该算式
            isUnique = generatedProblems.add(problem.split("=")[0].trim());

        } while (!isUnique); // 如果算式已存在，则重新生成

        return problem;
    }

    // 计算算式的结果
    private static int evaluate(int num1, String operator, int num2) {
        return switch (operator) {
            case "+" -> num1 + num2;
            case "-" -> num1 - num2;
            default -> throw new IllegalArgumentException("Unsupported operator: " + operator);
        };
    }
}